package com.excilys.capicsoubank.controllers;

import org.springframework.ui.Model;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

/**
 * Helpers pour utiliser le templating made in CapicsouBank.
 * 
 * @author "Grégory Coutant"
 * 
 */
public abstract class Template {

	/**
	 * Permet d'utiliser la JSP squelette base.jsp en lui fixant le titre, le
	 * menu actif et le nom de la JSP à inclure pour le contenu.
	 * 
	 * @param menu
	 *            Le menu actif de la page
	 * @param content
	 *            La JSP contenu
	 * @param model
	 *            Le modèle
	 * @param titleArgument
	 *            La partie dynamique du titre de la page
	 * @return La vue base.jsp
	 */
	public static String page(String menu, String content, Model model,
			String titleArgument) {
		model.addAttribute("menu", menu);
		model.addAttribute("titleArgument", titleArgument);
		model.addAttribute("content", content);
		return "base";
	}

	/**
	 * Permet de rediriger vers une page en spécifiant une erreur.
	 * 
	 * @param exception
	 *            Exception à afficher
	 * @param url
	 *            Url de la redirection
	 * @param redirectAttributes
	 *            Le modèle utilisé lors de la redirection
	 * @return La vue base.jsp
	 */
	public static String error(Exception exception, String url,
			RedirectAttributes redirectAttributes) {
		return error(exception.getClass().getSimpleName(), url,
				redirectAttributes);
	}

	/**
	 * Permet de rediriger vers une page en spécifiant une erreur.
	 * 
	 * @param error
	 *            L'erreur à afficher
	 * @param url
	 *            Url de la redirection
	 * @param redirectAttributes
	 *            Le modèle utilisé lors de la redirection
	 * @return La vue base.jsp
	 */
	public static String error(String error, String url,
			RedirectAttributes redirectAttributes) {
		redirectAttributes.addFlashAttribute("error", error);
		return "redirect:" + url;
	}
}
